package com.lanyou.esb.cook.proxy.service.push;

import java.util.List;

/**
 * 消息推送接口<br>
 * 描述：<br>
 * 1，当获取不到REDIS连接时，用于定时将消息推送至REDIS；<br>
 * 2，当将消息保存到数据库失败时，用于定时将消息推送至数据库；<br>
 * 
 * @author Davey.wu
 */
public interface Push<T> {
	void push();

	/**
	 * 推送消息至数据库
	 */
	void pushToDB();

	/**
	 * 更新消息至数据库
	 */
	void updateToDB();

	/**
	 * 推送消息至REDIS
	 */
	void pushToRedis();

	/**
	 * 推送消息至REDIS
	 * 
	 * @throws Exception
	 */
	void pushToRedis(T target) throws Exception;

	/**
	 * 将消息加入将存入数据库的集合
	 * 
	 * @param list
	 */
	void putToCollection4DB(List<T> list);

	/**
	 * 将消息加入将更新数据库的集合
	 * 
	 * @param list
	 */
	void putToCollection4DB4Update(List<T> list);

	/**
	 * 将消息加入将存入数据库的集合
	 * 
	 * @param target
	 */
	void putToCollection4DB(T target);

	/**
	 * 将消息加入将更新数据库的集合
	 * 
	 * @param target
	 */
	void putToCollection4DB4Update(T target);

	/**
	 * 将消息加入将存入REDIS的集合
	 * 
	 * @param list
	 */
	void putToCollection4Redis(List<T> list);

	/**
	 * 将消息加入将存入REDIS的集合
	 * 
	 * @param target
	 */
	void putToCollection4Redis(T target);
}
